from django.db import models
from datetime import datetime
from django import forms

#引入我们CourseComments所需要的外键models
from users.models import UserProfile
from courses.models import Course

#用户我要学习表单
class UserAsk(models.Model):
    name = models.CharField(max_length=20,verbose_name=u"姓名")
    mobile = models.CharField(max_length=11,verbose_name=u"手机")
    course_name = models.CharField(max_length=50,verbose_name=u"课程名")
    add_time = models.DateField(default=datetime.now,verbose_name=u"添加时间")


    class Meta:
        verbose_name = u"用户咨询"
        verbose_name_plural = verbose_name
#
# #进阶版本modelform:它可以向model一样save
# class AnotherUserForm(forms.ModelForm):
#     #继承之余还可以新增字段
#
#
#     #是由哪个model转换的
#     class Meta:
#         model = UserAsk
#         #我需要验证的字段



#用户对于课程评论
class CourseComments(models.Model):
    #会涉及两个外键:1.用户，2.课程，
    course = models.ForeignKey(Course,verbose_name=u"课程",on_delete=models.CASCADE)
    user = models.ForeignKey(UserProfile,verbose_name=u"用户",on_delete=models.CASCADE)
    comments = models.CharField(max_length=250,verbose_name=u"评论")
    add_time = models.DateField(default=datetime.now,verbose_name=u"添加时间")


    class Meta:
        verbose_name = u"课程评论"
        verbose_name_plural = verbose_name


#用户对于课程，机构，讲师的收藏
class UserFavorite(models.Model):
    #会涉及四个外键：用户，课程，机构，讲师
    TYPE_CHOICES = (
        (1,u"课程"),
        (2,u"课程机构"),
        (3,u"讲师")
    )

    user = models.ForeignKey(UserProfile,verbose_name=u"用户",on_delete=models.CASCADE)
    #直接保存用户的id
    fav_id = models.IntegerField(default=0)
    #表明收藏的是哪种类型
    fav_type = models.IntegerField(
        choices=TYPE_CHOICES,
        default=1,
        verbose_name=u"收藏类型"
    )
    add_time = models.DateField(default=datetime.now,verbose_name=u"评论时间")


    class Meta:
        verbose_name = u"用户收藏"
        verbose_name_plural = verbose_name


#用户消息表
class UserMessage(models.Model):
    #因为我们的消息有两种:发给全员和发给某一个用户
    #所以如果使用外键，每个消息会对应有用户，很难实现全员消息

    #机制版 为0发给所有用户，不为0就是发给用户的id
    user = models.IntegerField(default=0,verbose_name=u"接收用户")
    message = models.CharField(max_length=500,verbose_name=u"消息内容")

    #是否已读:布尔类型 BooleanField False未读 True表示已读
    has_read = models.BooleanField(default=False,verbose_name=u"是否已读")
    add_time = models.DateField(default=datetime.now,verbose_name=u"添加时间")

    class Meta:
        verbose_name = u"用户消息"
        verbose_name_plural = verbose_name


#用户课程表
class UserCourse(models.Model):
    #会涉及两个外键：1 用户 2，课程
    course = models.ForeignKey(Course,verbose_name=u"课程",on_delete=models.CASCADE)
    user = models.ForeignKey(UserProfile,verbose_name=u"用户",on_delete=models.CASCADE)
    add_time = models.DateField(default=datetime.now,verbose_name=u"添加时间")


    class Meta:
        verbose_name = u"用户课程"
        verbose_name_plural = verbose_name